import { defineStore } from 'pinia'
import type { CartItem, SeckillSkuVo, SeckillTime, ProductDetails, HotSku } from '@/types/index'
import uniStorage from '@/utils/storage'

// 定义 IndexStore，使用 Pinia 的 defineStore 方法
export const useIndexStore = defineStore('store', {
  // 定义状态
  state: () => ({
    CartList: [] as CartItem[], // 购物车列表
    seckillSkuVoList: [] as SeckillSkuVo[], // 秒杀商品列表
    seckillTime: {} as SeckillTime, // 秒杀时间信息
    productDetails: {} as ProductDetails, // 商品详情信息
    hotSkuList: [] as HotSku[], // 热销商品列表
    skuId: '', // 当前商品的 SKU ID
    categoryId: 0, // 当前分类的 ID
    categoryIndex: 0, // 当前分类的索引
  }),

  // 定义操作方法
  actions: {
    setSeckillSkuVoList(data: SeckillSkuVo[]) {
      this.seckillSkuVoList = data
    },
    setSeckillTime(data: SeckillTime) {
      this.seckillTime = data
    },
    setProductDetails(data: ProductDetails) {
      this.productDetails = data
    },
    setHotSkuList(data: HotSku[]) {
      this.hotSkuList = data
    },
    setCartList(data: CartItem[]) {
      this.CartList = data
    },
    setSkuId(data: string) {
      this.skuId = data
    },
    setCategoryId(data: number) {
      this.categoryId = data
    },
    setCategoryIndex(data: number) {
      this.categoryIndex = data
    },
  },

  // 持久化配置
  persist: {
    enabled: true, // 启用持久化
    strategies: [
      {
        storage: uniStorage, // 使用 uniStorage 进行存储
      },
    ],
  },
})
